const resolve = dir => require('path').join(__dirname, dir)
let USER_PATH = process.env.VUE_APP_USER ? `${process.env.VUE_APP_USER}/` : ''
let darkHue = process.env.VUE_APP_VERSIONS == 'delta' || process.env.VUE_APP_VERSIONS == 'gamma'
function addStyleResource(rule) {
  rule.use('style-resource')
    .loader('style-resources-loader')
    .options({
      patterns: [
        resolve(`src/assets/css/dark-hue.less`),
        resolve(`src/assets/css/light-eleme.less"`),
      ]
    })
}
let deploy = {
  publicPath: '/',
  productionSourceMap: false,
  chainWebpack: (config) => {
    config.resolve.alias
      .set('~assets', resolve('src/assets'))
      .set('~components', resolve('src/components'))
      .set('~store', resolve('src/store'))
    const types = ['vue-modules', 'vue', 'normal-modules', 'normal']
    types.forEach(type => darkHue && addStyleResource(config.module.rule('less').oneOf(type)))
  },
  configureWebpack: config => {
    config.module.rules.push({
      // 处理markdown文件
      test: /\.md$/,
      use: [
        { loader: "html-loader" },
        { loader: "markdown-loader" }
      ],
    });

    config.optimization.splitChunks.cacheGroups = {
      vendor: {
        chunks: 'all',
        test: /node_modules/,
        name: 'vendor',
        minChunks: 1,
        maxInitialRequests: 5,
        minSize: 0,
        priority: 100
      },
      common: {
        chunks: 'all',
        test: /[\\/]src[\\/]js[\\/]/,
        name: 'common',
        minChunks: 2,
        maxInitialRequests: 5,
        minSize: 0,
        priority: 60
      },
      styles: {
        name: 'styles',
        test: /\.(sa|sc|c)ss$/,
        chunks: 'all',
        enforce: true
      },
      runtimeChunk: {
        name: 'manifest'
      }
    }
  },
  devServer: {
    disableHostCheck: true,
    proxy: {
      '/api': {
        target: 'https://api.platform.baai.ac.cn/',
        changeOrigin: true,
        pathRewrite: {
          // "^/kuai": ''
          '^/api': ''
        }
      }
    }
  },
  pwa: {
    iconPaths: {
      favicon32: `icons/${USER_PATH}favicon-32x32.png`,
      favicon16: `icons/${USER_PATH}favicon-16x16.png`,
      appleTouchIcon: `icons/${USER_PATH}apple-touch-icon-180x180.png`,
      maskIcon: `icons/${USER_PATH}android-chrome-maskable-192x192.png`,
      msTileImage: `icons/${USER_PATH}mstile-150x150.png`
    }
  },
}
if (process.env.VUE_APP_PUBLICPATH) {
  deploy.publicPath = `/${process.env.VUE_APP_PUBLICPATH}`
}
module.exports = deploy


//

// const UglifyJsPlugin = require('uglifyjs-webpack-plugin');

// module.exports = {
//   publicPath: './',
//   //文件名hash
//   filenameHashing: false,
//   //生成source map
//   productionSourceMap: false,
//   pages: {
//     index: {
//       // page 的入口
//       entry: 'src/main.js',
//       // 模板来源
//       template: 'public/index.html',
//       // 在 dist/index.html 的输出
//       filename: 'index.html',
//       // 当使用 title 选项时，
//       // template 中的 title 标签需要是 <title><%= htmlWebpackPlugin.options.title %></title>
//       title: '管理后台',
//       // 在这个页面中包含的块，默认情况下会包含
//       // 提取出来的通用 chunk 和 vendor chunk。
//       //chunks: ['chunk-vendors', 'chunk-common', 'index']
//       cdn: {
//         js: [
//           'https://cdn.bootcss.com/vue/2.6.11/vue.min.js',
//           'https://cdn.bootcss.com/vue-router/3.1.3/vue-router.min.js',
//           'https://cdn.bootcss.com/axios/0.19.2/axios.min.js',
//           'https://cdn.bootcss.com/element-ui/2.13.0/index.js'
//         ],
//         css: [
//           'https://cdn.bootcss.com/element-ui/2.13.0/theme-chalk/index.css'
//         ]
//       }
//     }
//   },
//   devServer: {
//     proxy: {
//       '/adapter/': {
//         target: 'http://localhost',
//         changeOrigin: true,
//         pathRewrite: {
//           '^/adapter/': '/'
//         }
//       }
//     }
//   },
//   configureWebpack: config => {

//     // 开发时也使用cdn是为了方便和版本统一 当然也可以本地时用node_modules，发布用cdn
//     config.externals = {
//       'vue': 'Vue',
//       'vue-router': 'VueRouter',
//       'axios': 'axios',
//       'element-ui': 'ELEMENT'
//     }

//     // 为生产环境修改配置
//     if (process.env.NODE_ENV === 'production') {

//       config.plugins.push(
//         // 使用UglifyJsPlugin去掉console 可以略微降低文件大小
//         new UglifyJsPlugin({
//           uglifyOptions: {
//             compress: {
//               drop_debugger: true,
//               drop_console: true,  //生产环境自动删除console
//             },
//             warnings: false,
//           },
//           sourceMap: false,
//           parallel: true //使用多进程并行运行来提高构建速度。默认并发运行数：os.cpus().length - 1。
//         })
//       );
//     }
//   }

// }